//入口函数
$(function () {
    //1.创建传输对象
    const q = {
        pagenum: 1,//页码
        pagesize: 2,//页容量
        cate_id: '',//要筛选的分来id
        state: '',//文章分布状态
    }
    //显示文章列表
    getArtList();
    //加载文章分类下拉框
    getArtCateList();

    //2.为模板引擎 添加 日期格式化过滤器 --------
    template.defaults.imports.dataFormat = function (date) {
        const dt = new Date(date);
        let y = dt.getFullYear();
        let m = padZero(dt.getMonth() + 1);
        let d = padZero(dt.getDate());

        let hh = padZero(dt.getHours());
        let mm = padZero(dt.getMinutes());
        let ss = padZero(dt.getSeconds());

        return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
    }
    function padZero(num) {
        return num >= 10 ? num : '0' + num
    }

    //3.获取文章列表的方法
    function getArtList() {
        $.ajax({
            url: '/my/article/list',
            method: 'GET',
            data: q,
            success(res) {
                //如果请求失败，显示错误信息
                if (res.status !== 0) return layui.layer.msg(res.message);
                //如果请求成功，则渲染页面
                const strHTML = template('tpl-list', res);
                $('tbody').html(strHTML);
                //生成页码条，传入文章总数
                readerPageBar(res.total);
            }
        })
    }

    //4.获取文章分类的方法
    function getArtCateList() {
        //发送异步请求
        $.ajax({
            url: '/my/article/cates',
            method: 'GET',
            data: q,
            success(res) {
                if (res.status !== 0) return layui.layer.msg(res.message)
                //如果请求成功，则渲染页面
                const strHTML = template('tpl-catelist', res);
                $('select[name=cate_id]').html(strHTML);
                layui.form.render()
            }
        })
    }

    //5.为筛选表单添加submit行为
    $('#form-search').on('submit', function (e) {
        //阻止默认提交行为
        e.preventDefault();
        //设置查询对象的属性
        q.cate_id = $('select[name=cate_id]').val().trim();
        q.state = $('select[name=state]').val().trim();
        //渲染文章列表
        getArtList();
    })

    //6.渲染页码条
    function readerPageBar(total) {
        //调用layui的页码条组件，生成页码条标签，放到页面的 div中
        layui.laypage.render({
            elem: 'pageBar',//页码条容器id
            count: total,//总行数
            limit: q.pagesize,//页容量
            curr: q.pagenum,//当前所在页码
            layout: ['limit', 'count', 'prev', 'page', 'next', 'refresh', 'skip'],// 页码条布局
            limits: [2, 4, 6, 8],//页码下拉框选项
            //点击页码的回调函数
            jump: function (obj, first) {
                //把页码的参数设置给参数q
                q.pagenum = obj.curr
                //设置页容量下拉框值给参数q
                q.pagesize = obj.limit
                //如果是第一次点击页码,不触发函数
                if (!first) {
                    //重新请求当前页码的列表
                    getArtList()
                }
            }
        })
    }

    //7.删除文章
    $('tbody').on('click', '.remove', function () {
        //获得当前页面删除按钮的个数，用来判断数据的个数
        let len = $('.remove').length
        //获取被点击的删除的id值，用来删除对应的数据
        const id = $(this).attr('data-id');
        //弹出询问框
        layer.confirm('请问是否要删除该文章？？', { icon: 3, title: '提示' }, function (index) {
            //删除服务器数据
            $.ajax({
                url: '/my/article/delete/' + id,
                method: 'GET',
                success: function (res) {
                    //判断是否成功删除，返回信息
                    if (res.status != 0) return layui.layer.msg('删除文章失败');
                    layui.layer.msg('删除文章成功');

                    //删除数据后，应当判断是否为该页面中最后一条数据
                    //如果是最后一条数据，删除之后应当将页码数减一
                    //最后再重新加载数据
                    if (len === 1) {
                        //页码数最小为一
                        q.pagenum = q.pagenum === 1 ? 1 : q.pagenum - 1
                    }
                    getArtList();
                }
            })
            layer.close(index);
        })
    })

    //8.文章编辑事件
    $('tbody').on('click', '.redact', function () {
        //获取被点击的编辑的id值，用来编辑对应的数据
        const id = $(this).attr('data-id');
        //弹出询问框
        layer.confirm('请问是否要编辑该文章？？', { icon: 3, title: '提示' }, function (index) {
            //获取文章数据
            $.ajax({
                url: '/my/article/' + id,
                method: 'GET',
                success: function (res) {
                    //判断是否成功获取文章信息，返回信息
                    if (res.status != 0) return layui.layer.msg('获取文章信息失败');
                    location.replace('/article/art_pub.html?Id=' + id);
                }
            })
            layer.close(index);
        })
    })
})